package cn.stylefeng.guns.sys.modular.system.controller;

import cn.stylefeng.guns.sys.modular.system.entity.AttendAuditBtyArea;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditBtyAreaAndBtyArchivesParam;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditBtyAreaParam;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendEmployeeMonthSynchronousParam;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditBtyAreaAndBtyArchivesResult;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditBtyAreaAuditStatusResult;
import cn.stylefeng.guns.sys.modular.system.service.AttendAuditService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.service.AttendAuditBtyAreaService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.core.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 控制器
 *
 * @author wjk
 * @Date 2021-11-15 11:05:38
 */
@Controller
@RequestMapping("/attendAuditBtyArea")
public class AttendAuditBtyAreaController extends BaseController {

    private String PREFIX = "/modular/system/attendAuditBtyArea";
    @Autowired
    private AttendAuditBtyAreaService attendAuditBtyAreaService;

    @Autowired
    private AttendAuditService attendAuditService;
    /**
     * 跳转到主页面
     *
     * @author wjk
     * @Date 2021-11-15
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "/attendAuditBtyArea.html";
    }

    /**
     * 新增页面
     *
     * @author wjk
     * @Date 2021-11-15
     */
    @RequestMapping("/add")
    public String add() {
        return PREFIX + "/attendAuditBtyArea_add.html";
    }

    /**
     * 编辑页面
     *
     * @author wjk
     * @Date 2021-11-15
     */
    @RequestMapping("/edit")
    public String edit() {
        return PREFIX + "/attendAuditBtyArea_edit.html";
    }




    /**
     * 可能影响考勤异常数据的一些数据提醒
     *
     * @author wjk
     * @Date 2021-11-15
     */
    @RequestMapping("/attendAuditBtyArea_impact")
    public String attendAuditBtyAreaWarning() {
        return PREFIX + "/attendAuditBtyArea_impact.html";
    }

    /**
     * 每月仅有一次的考勤提醒
     *
     * @author wjk
     * @Date 2022-02-21
     */
    @RequestMapping("/synchronousPage")
    public String synchronousPage() {
        return PREFIX + "/attendAuditBtyAreaSynchronous.html";
    }


    /**
     * 新增接口
     *
     * @author wjk
     * @Date 2021-11-15
     */
//    @RequestMapping("/addItem")
//    @ResponseBody
//    public ResponseData addItem(AttendAuditBtyAreaParam attendAuditbtyAreaParam) {
//        this.attendAuditBtyAreaService.add(attendAuditbtyAreaParam);
//        return ResponseData.success();
//    }

    /**
     * 编辑接口
     *
     * @author wjk
     * @Date 2021-11-15
     */
//    @RequestMapping("/editItem")
//    @ResponseBody
//    public ResponseData editItem(AttendAuditBtyAreaParam attendAuditbtyAreaParam) {
//        this.attendAuditBtyAreaService.update(attendAuditbtyAreaParam);
//        return ResponseData.success();
//    }

    /**
     * 删除接口
     *
     * @author wjk
     * @Date 2021-11-15
     */
//    @RequestMapping("/delete")
//    @ResponseBody
//    public ResponseData delete(AttendAuditBtyAreaParam attendAuditbtyAreaParam) {
//        this.attendAuditBtyAreaService.delete(attendAuditbtyAreaParam);
//        return ResponseData.success();
//    }

    /**
     * 查看详情接口
     *
     * @author wjk
     * @Date 2021-11-15
     */
    @RequestMapping("/detail")
    @ResponseBody
    public ResponseData detail(AttendAuditBtyAreaParam attendAuditbtyAreaParam) {
        AttendAuditBtyArea detail = this.attendAuditBtyAreaService.getById(attendAuditbtyAreaParam.getId());
        return ResponseData.success(detail);
    }

    /**
     * 查询列表
     *
     * @author wjk
     * @Date 2021-11-15
     */
    @ResponseBody
    @RequestMapping("/list")
    public LayuiPageInfo list(AttendAuditBtyAreaParam attendAuditbtyAreaParam) {
        return this.attendAuditBtyAreaService.findPageBySpec(attendAuditbtyAreaParam);
    }

    /**
     * 查询列表，返回人事档案主表，关联各个月考勤记录的查询
     *
     * @author wjk
     * @Date 2021-11-17
     */
    @ResponseBody
    @RequestMapping("/listAttendAudit")
    public LayuiPageInfo listAttendAudit(AttendAuditBtyAreaAuditStatusResult attendAuditBtyAreaAuditStatusResult) {
        if(ToolUtil.isNotEmpty(attendAuditBtyAreaAuditStatusResult.getAttendMonth())){
            return this.attendAuditBtyAreaService.findPageBySpeclistAttendAudit(attendAuditBtyAreaAuditStatusResult);
        }else {
            return new LayuiPageInfo();
        }
    }

    /**
     * 查询列表，返回人事档案主表，关联各个月考勤记录的查询,为导出查询，不分页
     *
     * @author wjk
     * @Date 2021-12-01
     */
    @ResponseBody
    @RequestMapping("/listAttendAuditForExport")
    public ResponseData listAttendAuditForExport(AttendAuditBtyAreaAuditStatusResult attendAuditBtyAreaAuditStatusResult) {
        if(ToolUtil.isNotEmpty(attendAuditBtyAreaAuditStatusResult.getAttendMonth())){
            List<AttendAuditBtyAreaAuditStatusResult> list= this.attendAuditBtyAreaService.listAttendAuditForExport(attendAuditBtyAreaAuditStatusResult);
            return ResponseData.success(list);
        }else {
            return ResponseData.error(200,"考勤月份不允许为空","");

        }
    }

    /**
     *
     *
     * 强制驳回数据到督导驳回状态
     * @author wjk
     * @Date 2021-11-18
     */
    @ResponseBody
    @RequestMapping("/auditStatusToSubmitAudit")
    public ResponseData auditStatusToSubmitAudit(AttendAuditBtyAreaAuditStatusResult attendAuditBtyAreaAuditStatusResult){
        Map<String,String> map = this.attendAuditService.auditStatusToSubmitAudit(attendAuditBtyAreaAuditStatusResult);
        if(map.get("size").equals("0")){
            return ResponseData.error(200,"",map);
        }else{
            return ResponseData.success(map);
        }

    }
    /**
     * 查询列表的统计值，主要统计，档案表中的店，
     *
     * @author wjk
     * @Date 2021-11-17
     */
    @ResponseBody
    @RequestMapping("/searchSumValue")
    public Map<String,String> searchSumValue(AttendAuditBtyAreaAuditStatusResult attendAuditBtyAreaAuditStatusResult) {
        return this.attendAuditBtyAreaService.searchSumValue(attendAuditBtyAreaAuditStatusResult);
    }

    /**
     * 查询运营经理的列表，
     *
     * @author wjk
     * @Date 2021-12-01
     */
    @ResponseBody
    @RequestMapping("/getYyjlList")
    public ResponseData getYyjlList() {
        List<AttendAuditBtyArea> list = this.attendAuditBtyAreaService.getYyjlList();
        return ResponseData.success(list);
    }


    /**
     * 查询列表，返回人事列表中的店，或者人员的一些影响正常考勤的一些信息
     *
     *
     * 情况1：未指定店长，无法进行创建考勤，和做考勤
     * 情况2：考勤店长不在本店，考勤店长无法跨店进行考勤
     * 情况3：身份证重复，两条数据可能是一个人，考勤被做双份
     * 情况4：手机号重复，两条数据可能是一个人，考勤被做双份
     * 情况5：银行卡重复，两个人有可能造成工资错误发放
     * 情况6：职位异常，职位不在('营运经理', '督导', '大店长', '店长', '储备', '店助', '管培生', '后厨员工', '迎宾', '前厅员工', '员工', '兼职', '钟点工')职位之中
     * 情况7：正式员工，工资非整百
     * 情况8：兼职，钟点工，的岗位工资不为0的情况
     * 情况9：兼职工资超过500元/人天
     * 情况10：钟点工超过50元/人小时
     * 情况11：运营经理，督导，不发工资情况*
     *
     * @author wjk
     * @Date 2021-12-23
     */
    @ResponseBody
    @RequestMapping("/pagelistAttendAuditForImpact")
    public LayuiPageInfo pagelistAttendAuditForImpact(AttendAuditBtyAreaAndBtyArchivesParam attendAuditBtyAreaAndBtyArchivesParam) {
            if(ToolUtil.isNotEmpty(attendAuditBtyAreaAndBtyArchivesParam.getImpactType())){
                return this.attendAuditBtyAreaService.pagelistAttendAuditForImpact(attendAuditBtyAreaAndBtyArchivesParam);
            }else {
                return new LayuiPageInfo();
            }

    }


    /**
     * 查询列表，返回人事列表中的店，或者人员的一些影响正常考勤的一些信息，不分页
     *
     * 情况1：未指定店长，无法进行创建考勤，和做考勤
     * 情况2：考勤店长不在本店，考勤店长无法跨店进行考勤
     * 情况3：身份证重复，两条数据可能是一个人，考勤被做双份
     * 情况4：手机号重复，两条数据可能是一个人，考勤被做双份
     * 情况5：银行卡重复，两个人有可能造成工资错误发放
     * 情况6：职位异常，职位不在('营运经理', '督导', '大店长', '店长', '储备', '店助', '管培生', '后厨员工', '迎宾', '前厅员工', '员工', '兼职', '钟点工')职位之中
     * 情况7：正式员工，工资非整百
     * 情况8：兼职，钟点工，的岗位工资不为0的情况
     * 情况9：兼职工资超过500元/人天
     * 情况10：钟点工超过50元/人小时
     * 情况11：运营经理，督导，不发工资情况
     *
     * @author wjk
     * @Date 2021-12-27
     */
    @ResponseBody
    @RequestMapping("/listAttendAuditForImpactForExport")
    public ResponseData listAttendAuditForImpactForExport(AttendAuditBtyAreaAndBtyArchivesParam attendAuditBtyAreaAndBtyArchivesParam) {
        if(ToolUtil.isNotEmpty(attendAuditBtyAreaAndBtyArchivesParam.getImpactType())){
            List<AttendAuditBtyAreaAndBtyArchivesResult> list= this.attendAuditBtyAreaService.listAttendAuditForImpactForExport(attendAuditBtyAreaAndBtyArchivesParam);
            return ResponseData.success(list);
        }else {
            return ResponseData.error(200,"情况不允许为空","");
        }
    }


    /**
     * 查询列表，统计一些影响正常考勤的一些信息，
     *
     * @author wjk
     * @Date 2021-12-27
     */
    @ResponseBody
    @RequestMapping("/searchSumValueImpact")
    public Map<String,String> searchSumValueImpact() {
        return this.attendAuditBtyAreaService.searchSumValueImpact();
    }




    /**
     * 查询非考勤期间， 设置的考勤店长不在设置的店内，店长被调走情况，将该店的考勤店长，考勤店长电话清除
     *
     * @author wjk
     * @Date 2021-12-29
     */
    @ResponseBody
    @RequestMapping("/queryDzNotInDm")
    public Map<String,String> queryDzNotInDm(){
        return this.attendAuditBtyAreaService.queryDzNotInDm();
    }



//    /**
//     * 查询列表，返回人事列表中的店，或者人员的一些影响正常考勤的一些信息
//     * 查询缺少考勤店长的情况
//     *
//     * @author wjk
//     * @Date 2021-12-23
//     */
//    @ResponseBody
//    @RequestMapping("/listAttendAuditForImpactNoDz")
//    public LayuiPageInfo listAttendAuditForImpactNoDz(AttendAuditBtyAreaAuditStatusResult attendAuditBtyAreaAuditStatusResult) {
//        if(ToolUtil.isNotEmpty(attendAuditBtyAreaAuditStatusResult.getAttendMonth())){
//            return this.attendAuditBtyAreaService.listAttendAuditForImpactNoDz(attendAuditBtyAreaAuditStatusResult);
//        }else {
//            return new LayuiPageInfo();
//        }
//    }

    /**
     * 获取同步考勤的月份信息
     * @author wjk
     * @Date 2022-02-21
     */
    @ResponseBody
    @PostMapping("/getSynchronousMonth")
    public ResponseData getSynchronousMonth(){
        Map<String,String> map = this.attendAuditBtyAreaService.getSynchronousMonth();
        return ResponseData.success(map);
    }


    /**
     * 月度考勤同步回人事档案
     * @author wjk
     * @Date 2022-02-21
     */
    @ResponseBody
    @RequestMapping("/synchronousAttendEmployeeMonth")
    public ResponseData synchronousAttendEmployeeMonth(AttendEmployeeMonthSynchronousParam param) throws ParseException {
        Map<String,String> map = this.attendAuditBtyAreaService.synchronousAttendEmployeeMonth(param);
        if(map.get("flag").equals("true")){
            return ResponseData.success(map);
        }else{
            return ResponseData.error(405, map.get("message"), map);
        }

    }



}


